home *** CD-ROM | disk | FTP | other *** search
/ PC Gamer (Italian) 30 / PC Gamer IT CD 30 1-2.iso / MOTS / GAMEDATA / RESOURCE / JKMRES.GOO / cog_xtank3.cog < prev    next >
Text File  |  1998-02-25  |  2KB  |  71 lines

  1. # Jedi Knight Cog Script
  2. #
  3. # XTANK3.COG
  4. #
  5. # This cog causes an attached object to explode if damaged sufficiently
  6. #
  7. # 5/23 - RKD - Removed buggy "remains" element
  8. # 5/30 - YB  - Don't explode if hit by fists.
  9. # 7/7  - CR  - Converted to actor cog
  10. #              Added delay in exploding
  11. # 7/7  - YB  - Rewrote the script to use thing user data
  12. # 7/8  - CR  - Adjusted Delay, fixed damage test, marked issue closed :)
  13. # 7/25 - YB  - Made execution mode SERVER | SYNC
  14. # 8/26 - RKD - Added killtimerex to fix bug
  15. #
  16. # (C) 1997 LucasArts Entertainment Co. All Rights Reserved
  17.  
  18. flags=0x80
  19.  
  20. symbols
  21.  
  22. message        created
  23. message        damaged
  24. message        timer
  25.  
  26. template       barrel_exp=+xtank3_exp        local
  27.  
  28. int            barrel                        local
  29.  
  30. flex           barrelhealth                  local
  31. flex           damage                        local
  32.  
  33. end
  34.  
  35. # ========================================================================================
  36.  
  37. code
  38.  
  39. created:
  40.    SetThingUserData(GetSenderRef(), 50);     // set the initial user data (i.e. "health")
  41.    Return;
  42.  
  43. # ............................................................................................
  44.  
  45. damaged:
  46.    barrel = GetSenderRef();
  47.    damage = GetParam(0);
  48.    barrelhealth = GetThingUserData(barrel);
  49.  
  50.    if(GetParam(1) == 1) Return;              // barrel won't be damaged by damage type impact
  51.  
  52.    if(barrelhealth <= damage)          // is this enough damage to kill the barrel ?
  53.    {
  54.       SetTimerEx(0.80, barrel, 0, 0);        // prepare to kill the barrel in 0.85 second
  55.       Return;
  56.    }
  57.  
  58.    SetThingUserData(barrel, barrelhealth - damage);
  59.    Return;
  60.  
  61. # ............................................................................................
  62.  
  63. timer:
  64.    KillTimerEx(GetSenderId());
  65.    CreateThing(barrel_exp, GetSenderId());   // create an explosion
  66.    DestroyThing(GetSenderId());              // Destroy the barrel
  67.    Return;
  68.  
  69. end
  70.  
  71.